import { Instance } from "./Instance";

export class StringUtils {

    public static getInstance(): StringUtils {
        return Instance.get(StringUtils);
    }

    uuid(): string {
        let s = [], hexDigits = "0123456789abcdef";
        for (let i = 0; i < 32; i++) {
            s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
        }
        s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
        s[8] = s[13] = s[18] = s[23];

        return s.join("");
    }

    isStrHead(str: string, head: string): boolean {
        return this.slice(str, 0, head.length) == head;
    }

    isStrHeadIgnoreCase(str: string, head: string): boolean {
        return this.slice(str, 0, head.length).toLowerCase() == head.toLowerCase();
    }

    small(str: string): string {
        return str.small();
    }

    slice(str: string, start?: number, end?: number): string {
        return str.slice(start, end);
    }

    sub(str: string, start?: number, end?: number): string {
        return str.slice(start, end);
    }

}
